package com.evildog.workspace.invest.application.convert;

import com.evildog.workspace.common.result.PagedResult;
import java.util.List;
import com.evildog.workspace.invest.application.vo.BillTypePageVO;
import com.evildog.workspace.invest.application.vo.BillTypeListVO;
import com.evildog.workspace.invest.application.vo.BillTypeVO;
import com.evildog.workspace.invest.application.dto.BillTypePageDTO;
import com.evildog.workspace.invest.application.dto.BillTypeListDTO;
import com.evildog.workspace.invest.application.dto.BillTypeDTO;
import com.evildog.workspace.invest.application.model.BillTypeParam;
import com.evildog.workspace.invest.application.model.BillTypePageParam;
import com.evildog.workspace.invest.application.model.BillTypeListParam;
import com.evildog.workspace.invest.application.bo.BillTypeBO;
import com.evildog.workspace.invest.application.bo.BillTypePageBO;
import com.evildog.workspace.invest.application.bo.BillTypeListBO;
import com.evildog.workspace.invest.application.entity.BillType;
import com.evildog.workspace.invest.application.entity.BillTypePageDO;
import com.evildog.workspace.invest.application.entity.BillTypeListDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

@Mapper
public interface BillTypeConvert {

    BillTypeConvert INSTANCE = Mappers.getMapper(BillTypeConvert.class);

    BillTypePageDTO convert(BillTypePageParam billTypePageParam);

    BillTypeListDTO convert(BillTypeListParam billTypeListParam);

    BillTypeDTO convert(BillTypeParam billTypeParam);

    @Mapping(target = "isDeleted", ignore = true)
    BillType convert(BillTypeDTO billTypeDTO);

    BillTypePageDO convert(BillTypePageDTO billTypePageDTO);

    BillTypeVO convert(BillTypeBO billTypeBO);

    BillTypeBO convert(BillType billType);

    List<BillTypeListBO> convert(List<BillTypeListDO> billTypeList);

    List<BillTypeListVO> convertVoList(List<BillTypeListBO> billTypeListBO);

    @Mappings({})
    PagedResult<BillTypePageBO> convert(IPage<BillTypePageDO> page);

    PagedResult<BillTypePageVO> convert(PagedResult<BillTypePageBO> page);
}